package semaphore;

import java.util.concurrent.Semaphore;

// 信号量：表示可用资源的个数(具体用一个计数器统计)
// 这里的信号量和操作系统中的是一样的，只是这里封装了一下。
// p 在这里：acquire  信号量减1
// v 在这里：release  信号量加1
//
// 锁可以视为计数器为1的信号量，因为此时acquire，信号量-1变成0，此时再acquire就会阻塞等待release释放一个信号量。
//
public class SemaphoreTest {
    public static void main(String[] args) throws InterruptedException {
        Semaphore semaphore = new Semaphore(1);
        semaphore.acquire();
        System.out.println("执行1次P操作");

//        semaphore.release();
//        System.out.println("执行一次V操作");

        semaphore.acquire();
        System.out.println("执行2次P操作");
    }
}
